package com.itheima.test05;

import java.util.Arrays;

public class Test06 {
    public static void main(String[] args) {
        int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
        quickSort(arr, 0, arr.length - 1);
        System.out.println(Arrays.toString(arr));

    }

    //定义方法 实现快排
    //参数  数组     左边的开始    右边的结束
    //返回值 不需要返回值void
    public static void quickSort(int[] arr, int left, int right) {
        if (left > right) {
            return;
        }
        //先记录左边
        int left0 = left;
        //记录右边
        int right0 = right;
        //找一个基准数
        int jizhunshu = arr[left0];
        //左边第一个
        //死循环
        while (left != right) {
            //从右边找小的
            while (arr[right] >= jizhunshu && left < right) {
                right--;
            }
            //从左边找大的
            while (arr[left] <= jizhunshu && left < right) {
                left++;
            }
            //左右交换 arr[left]  arr[right]
            int temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;

        }
        //基准数归位 arr[left0] arr[left]
        int temp = arr[left0];
        arr[left0] = arr[left];
        arr[left] = temp;

        //左边以 左边为小数组 开始
        quickSort(arr, left0, left - 1);
        //右边以右边为小数组开始
        quickSort(arr, left + 1, right0);


    }
}
